package task1;

import java.util.Random;

public class SumOfArray {
    public static void main(String[] args) {
        // 定义一个16*16的二维数组
        int[][] arr = new int[16][16];
        // 通过随机数给数组赋值
        for(int i = 0; i< arr.length; i++){
            Random r = new Random(i);
            for(int j = 0; j < arr[i].length; j++){
                arr[i][j] = r.nextInt(100);
            }
        }
        // 打印二维数组
        System.out.println("--------------------------");
        System.out.println("二维数组如下：");
        for(int i = 0; i < arr.length; i++){
            for(int j = 0; j < arr[i].length; j++){
                System.out.print(arr[i][j] + "\t");
                if(j == arr[i].length - 1){
                    System.out.print("\n");
                }
            }
        }

        // 每行元素累加并打印
        System.out.println("--------------------------");
        System.out.println("每行元素和");
        for(int i = 0; i <arr.length; i++){
            int s1 = 0;
            for(int j = 0; j < arr[i].length; j++){
                s1 += arr[i][j];
            }
            System.out.println("第" + (i + 1) + "行元素和为\t" + s1);
        }

        // 每列元素累加并打印
        System.out.println("--------------------------");
        System.out.println("每列元素和");
        // 找出最长的一行的长度
        int maxLen = 0 ;
        for(int i = 0; i < arr.length; i++){
            maxLen = arr[i].length >= maxLen ? arr[i].length: maxLen;
        }
        // 循环求出每列的元素和
        for(int i = 0; i < maxLen; i++){
            int s2 = 0;
            for(int j = 0; j < arr.length; j++){
                if(arr[j].length <= i){
                    break;
                } else{
                    s2 += arr[j][i];
                }
            }
            System.out.println("第" + (i +1) + "列元素和为\t" + s2);
        }

        // 左上角到右下角元素和
        System.out.println("--------------------------");
        int s3 = 0;
        for(int i = 0; i < arr.length; i++){
            s3 += arr[i][i];
        }
        System.out.println("左上角到右下角元素和为\t"  + s3);

        // 右上角到左下角元素和
        System.out.println("--------------------------");
        int s4 = 0;
        for(int i = 0; i < arr.length; i++){
//            System.out.println(arr[i][arr[i].length - 1 - i]);
            s4 += arr[i][arr[i].length - 1 - i];
        }
        System.out.println("右上角到左下角元素和为\t" + s4);
    }
}
